封裝 Encapsulation 被定義為數據包成一包,將代碼 code 和操作的數據綁
再一起的機制。
考慮封裝的另一種方式,是一個保護屏障,可以防止數據被該屏蔽之外的 code 訪問或更動。
通常會將 attributes 盡可能設定成 private,若要從外部更改、存取則使用 setter、getter methods。
再 Java 中,可以將 attributes 和 methods 從一個 class 繼承到另一個 class,這個過程稱為 inheritance
super 繼承的物件和父類不是在同一個記憶體位置,可以用 instanceof 來查看
避免寫過多重複的程式碼
Chid class 會比 parent class 還要有更多訊息,發現 …is a … 可以用 extends 關鍵字 來做 inheritance 繼承
Java 只能做單一繼承 single inheritance ,一個 clss 最多只能繼承一個 parent class
關鍵字 | 內部類別 | 相同套件類別 | 不同套件類別 |
---|---|---|---|
public | 可存取 | 可存取 | 可存取 |
private | 可存取 | 不可存取 | 不可存取 |
protected | 可存取 | 可存取 | 子類別可存取 |
無 | 可存取 | 可存取 | 不可存取 |
簡單來說,權限依小至大區分 : private → 無 → protected → public
如果一開始不確定通常都會先用 private
重新定義方法要注意,父類別中方法權限只能擴大不能縮小
若原來成員 public 子類別重新定義不可為 private 或 protected
執行superclass 的 constructor |
如果父類 super class 有預設值 default values 那被子類別 child class 呼叫時就不會error
執行 superclass 的 method |
super.method 可以讓child class call super class has method (其實 this or 不寫都可以,但為了閱讀性還是要寫一下)
可以在 chlid class 複寫從 parent class 繼承過來的 method
使用時使用 @Override
Polymoropgism means that a varibale of supertype can refer to a subtype object !!
簡單來說 x is a y,就可以用 y 來 declare x 的 type
Polymoropgism 的好處在,declare 一個 parent class variable ,那 variable 可以用來裝任何 subclass object
子類別只能繼承一個父類別
繼承除了可以避免重複的程式碼以外,子類別 跟 父類別 還會有 is-a 的關係 「是一種」
小知識
Polymorphism 是生物學名詞,只一種物種在同一群族存在兩種或多種明顯不同的樣態。
Polymorphism多型 本質是 Inheritance繼承 概念的延伸,舉例繼承 superclass 後使用 Override 複寫其他 method 的 childcalss 就是多型的概念。